// 路由配置文件
// 定义应用的所有路由路径和对应的组件
import { createBrowserRouter, Navigate } from 'react-router-dom'
import Layout from '@/layouts/MainLayout' // 主布局组件
import Home from '@/pages/Home' // 首页
import About from '@/pages/About' // 关于页面
import Dashboard from '@/pages/Dashboard' // 仪表板页面
import NotFound from '@/pages/NotFound' // 404页面
import Template from '@/pages/Template' // 模板页面
import Material from '@/pages/Material' // 素材页面
import AiTools from '@/pages/AiTools' // AI工具页面
import Create from '@/pages/Create' // 创建页面
import My from '@/pages/My' // 我的页面
import Team from '@/pages/Team' // 团队页面

// 模板子页面导入
import TemplateAll from '@/pages/template/TemplateAll' // 全部模板
import TemplatePoster from '@/pages/template/TemplatePoster' // 海报模板
import TemplateDouyin from '@/pages/template/TemplateDouyin' // 抖音模板
import TemplateMp from '@/pages/template/TemplateMp' // 公众号模板
import TemplateEcom from '@/pages/template/TemplateEcom' // 电商模板
import TemplatePpt from '@/pages/template/TemplatePpt' // PPT模板
import TemplatePrint from '@/pages/template/TemplatePrint' // 印刷模板
import TemplateH5 from '@/pages/template/TemplateH5' // H5模板
import TemplateSocial from '@/pages/template/TemplateSocial' // 社交模板
import TemplateVideo from '@/pages/template/TemplateVideo' // 视频模板
import TemplateElement from '@/pages/template/TemplateElement' // 元素模板

// 路由守卫组件：检查用户是否已登录
// 如果未登录则重定向到登录页面
const ProtectedRoute = ({ children }: { children: React.ReactNode }) => {
  const isAuthenticated = !!localStorage.getItem('token') // 检查本地存储中是否有token
  if (!isAuthenticated) {
    return <Navigate to="/login" replace /> // 未登录时重定向到登录页
  }
  return <>{children}</> // 已登录则渲染子组件
}

// 创建浏览器路由配置
export const router = createBrowserRouter([
  {
    path: '/', // 根路径
    element: <Layout />, // 使用主布局组件
    children: [ // 子路由配置
      { index: true, element: <Home /> }, // 首页（默认路由）
      {
        path: 'template', // 模板相关路由
        element: <Template />, // 模板主页面
        children: [ // 模板子路由
          { path: 'all', element: <TemplateAll /> }, // 全部模板
          { path: 'poster', element: <TemplatePoster /> }, // 海报模板
          { path: 'douyin', element: <TemplateDouyin /> }, // 抖音模板
          { path: 'mp', element: <TemplateMp /> }, // 公众号模板
          { path: 'ecom', element: <TemplateEcom /> }, // 电商模板
          { path: 'ppt', element: <TemplatePpt /> }, // PPT模板
          { path: 'print', element: <TemplatePrint /> }, // 印刷模板
          { path: 'h5', element: <TemplateH5 /> }, // H5模板
          { path: 'social', element: <TemplateSocial /> }, // 社交模板
          { path: 'video', element: <TemplateVideo /> }, // 视频模板
          { path: 'element', element: <TemplateElement /> }, // 元素模板
        ]
      },
      { path: 'material', element: <Material /> }, // 素材页面
      { path: 'ai-tools', element: <AiTools /> }, // AI工具页面
      { path: 'create', element: <Create /> }, // 创建页面
      { path: 'my', element: <My /> }, // 我的页面
      { path: 'team', element: <Team /> }, // 团队页面
      { path: 'about', element: <About /> }, // 关于页面
      { 
        path: 'dashboard', 
        element: ( // 仪表板页面（需要登录）
          <ProtectedRoute>
            <Dashboard />
          </ProtectedRoute>
        ) 
      },
      { path: '*', element: <NotFound /> }, // 404页面（匹配所有未定义的路由）
    ],
  },
]) 